Code
get_outcomez <- function(vec, n = 3){
rle_vec <- rle(vec)
df <- data.frame(length = rle_vec$lengths, value = rle_vec$values)
df <- df[df$length >= n,]
df$outcome <- 1 - df$value
outcomez <- list()
for(i in which(df$length > n)){
df_mini <- df[rep(i, df$length[i] - n),]
df_mini$outcome <- df_mini$value
outcomez[[length(outcomez) + 1]] <- rbind(df_mini, df[i,])
}
outcomez[[length(outcomez) + 1]] <- df[which(df$length == n),]
outcomez <- do.call(rbind, outcomez)
return(outcomez)
}